//package org.jeecg.modules.system.controller;
//
//import lombok.extern.slf4j.Slf4j;
//import org.apache.shiro.SecurityUtils;
//import org.jeecg.common.api.vo.Result;
//import org.jeecg.common.system.vo.LoginUser;
//import org.jeecg.modules.system.entity.SysUserExt;
//import org.jeecg.modules.system.service.ISysUserExtService;
//import org.springframework.beans.BeanUtils;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.web.bind.annotation.*;
//import org.springframework.web.multipart.MultipartFile;
//import org.springframework.web.servlet.ModelAndView;
//import sun.misc.BASE64Decoder;
//
//import javax.imageio.ImageIO;
//import javax.servlet.ServletOutputStream;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import javax.servlet.http.HttpSession;
//import java.awt.image.BufferedImage;
//import java.io.*;
//import java.util.UUID;
//
///**
// * @author ZJJ
// * <p>
// * 风控用户拓展信息控制器
// */
//
//@Slf4j
//@RestController
//// @RequestMapping("/sysUserExtController")
//public class SysUserExtController {
//    @Autowired
//    private ISysUserExtService sysUserExtService;
//
//    @Value("${jeecg.path.upload}")
//    private String upLoadPath;
//
//    @PostMapping("/userExt")
//    public Result userExt(@RequestBody SysUserExt userExt) {
//        return Result.OK(sysUserExtService.selectSysUserExt(userExt));
//    }
//
//    @PostMapping("/saveOrUpdate")
//    public Result saveOrUpdate(@RequestBody SysUserExt userExt) {
//        sysUserExtService.saveOrUpdate(userExt);
//        return Result.OK();
//    }
//
//
//    @PostMapping("/upload")
//    @ResponseBody
//    public String upload(MultipartFile file, HttpSession session) throws Exception {
//        System.out.println(file);
//        if (file == null) {
//            return "请上传图片";
//        }
//
//        // 打印文件的名称
//        System.out.println("FileName:" + file.getOriginalFilename());
//        String filename = file.getOriginalFilename();
//        if (filename == null || filename.length() == 0) {
//            return "请上传图片";
//        }
//        // 获取文件后缀名
//        String ext = filename.substring(filename.lastIndexOf("."));
//        String imgName = UUID.randomUUID().toString() + ext;
//        // 获取当前登录用户对象信息
//        LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
//
//        //将名字存到session中
//        // session.setAttribute("photoName", file.getOriginalFilename());
//
//        // 确定上传文件的位置
//        // 本地路径,测试确实能通过
//        //String path = "D:/temp/temp";
//        // TODO Linux系统
//        String path = upLoadPath + "/img";
//        // 获取上传的位置（存放图片的文件夹）,如果不存在，创建文件夹
//        File fileParent = new File(path);
//        if (!fileParent.exists()) {
//            fileParent.mkdirs();
//        }
//        File newFile = new File(path + "/", imgName);
//
//        SysUserExt sysUserExt = new SysUserExt();
//        sysUserExt.setSysUserId(loginUser.getId());
//        sysUserExt = sysUserExtService.selectSysUserExt(sysUserExt);
//        System.out.println(sysUserExt.getHeadImg());
//
//        // 这里还要操作删除磁盘中旧的图片
//        String headImg = sysUserExt.getHeadImg();
//        if (headImg != null && headImg.length() > 0) {
//            File deleteFile = new File(headImg);
//            if (deleteFile.exists()) {
//                boolean a = deleteFile.delete();
//                System.out.println(a);
//            }
//        }
//        sysUserExt.setHeadImg(path + "/" + imgName);
//        sysUserExtService.saveOrUpdate(sysUserExt);
//        // 如果不存在，创建一个副本
//        if (!newFile.exists()) {
//            newFile.createNewFile();
//        }
//        // 将io上传到副本中
//        file.transferTo(newFile);
//
//        return "上传成功";
//
//    }
//
//    @GetMapping("/showimage")
//    public String showphoto(HttpServletRequest request, HttpServletResponse response, HttpSession session)
//            throws Exception {
//
//        response.setDateHeader("Expires", 0);
//        response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");
//        response.addHeader("Cache-Control", "post-check=0, pre-check=0");
//        response.setHeader("Pragma", "no-cache");
//        response.setContentType("image/jpeg");
//
//        // 获得的系统的根目录
//        // File fileParent = new File(File.separator);
//        // String photoName = (String) session.getAttribute("photoName");
//        LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
//        SysUserExt sysUserExt = new SysUserExt();
//        sysUserExt.setSysUserId(loginUser.getId());
//        sysUserExt = sysUserExtService.selectSysUserExt(sysUserExt);
//        if (sysUserExt == null || sysUserExt.getHeadImg() == null || sysUserExt.getHeadImg().length() == 0) {
//            return null;
//        }
//        // 获得/usr/CBeann目录
//        // System.out.println(fileParent);
//        File file = new File(sysUserExt.getHeadImg());
//
//        FileInputStream inputStream = new FileInputStream(file);
//        BufferedImage bi = ImageIO.read(inputStream);
//        ServletOutputStream out = response.getOutputStream();
//        ImageIO.write(bi, "jpg", out);
//        try {
//            out.flush();
//        } finally {
//            out.close();
//            inputStream.close();
//        }
//        return null;
//    }
//
//    @PostMapping("/result")
//    public void result(String pdfUrl, HttpServletRequest request, HttpServletResponse response) throws IOException {
//
//        response.setCharacterEncoding("utf-8");
//        response.setContentType("multipart/form-data");
//        response.setHeader("Content-Disposition", "xxx.pdf");
//        ServletOutputStream outputStream = response.getOutputStream();
//        writeBytes(pdfUrl, outputStream);
//        File file = new File(pdfUrl);
//        if (file.exists()) {
//            DataOutputStream temps = new DataOutputStream(outputStream);
//            FileInputStream fileInputStream = new FileInputStream(pdfUrl);
//            DataInputStream in = new DataInputStream(fileInputStream);
//            byte[] b = new byte[2048];
//            while ((in.read(b)) != -1) {
//                temps.write(b);
//                temps.flush();
//            }
//            in.close();
//            temps.close();
//            fileInputStream.close();
//            outputStream.close();
//        } else {
//            log.error("文件不存在!");
//        }
//        outputStream.close();
//    }
//
//    /**
//     * 输出指定文件的byte数组
//     *
//     * @param filePath 文件路径
//     * @param os       输出流
//     * @return
//     */
//    public static void writeBytes(String filePath, OutputStream os) throws IOException {
//        FileInputStream fis = null;
//        try {
//            File file = new File(filePath);
//            if (!file.exists()) {
//                throw new FileNotFoundException(filePath);
//            }
//            fis = new FileInputStream(file);
//            byte[] b = new byte[1024];
//            int length;
//            while ((length = fis.read(b)) > 0) {
//                os.write(b, 0, length);
//            }
//        } catch (IOException e) {
//            throw e;
//        } finally {
//            if (os != null) {
//                try {
//                    os.close();
//                } catch (IOException e1) {
//                    e1.printStackTrace();
//                }
//            }
//            if (fis != null) {
//                try {
//                    fis.close();
//                } catch (IOException e1) {
//                    e1.printStackTrace();
//                }
//            }
//        }
//    }
//}
